package cn.airnan.dg.entity;

import cn.airnan.dg.utils.SocketMsg;
import com.alibaba.fastjson2.JSON;
import jakarta.websocket.Session;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 玩家实体类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Player {

    /**
     * 玩家要绑定的会话
     */
    private Session session;

    /**
     * 玩家ID
     */
    private String id;

    /**
     * 玩家位置
     */
    private Integer index;

    /**
     * 玩家分数
     */
    private Integer score = 0;

    /**
     * 加分
     *
     * @param add 要增加的分数
     */
    private void addScore(Integer add) {
        this.score += add;
    }

    /**
     * 重置分数
     */
    private void clearScore() {
        this.score = 0;
    }

    /**
     * 发送消息给玩家
     *
     * @param message 要发送的消息
     */
    public void sendMessage(String type, String message) {
        Session session = getSession();
        if (session != null && session.isOpen()) {
            try {
                SocketMsg msg = new SocketMsg();
                msg.setType(type);
                msg.setData(message);
                session.getAsyncRemote().sendText(JSON.toJSONString(msg));
            } catch (Exception e) {
                // 处理发送消息失败的情况
                e.printStackTrace();
            }
        }
    }
}
